/*
 *  NMEA.h
 *
 *  Created on: 2020年3月14日
 *      Author: Administrator
 *		Node  :	
 */

#ifndef MC20_NMEA_H_
#define MC20_NMEA_H_

#ifdef __cplusplus
 extern "C" {
#endif

/* 包含头文件 ------------------------------------------------------------------*/
#include "bsp.h"
/* 宏定义 --------------------------------------------------------------------*/

/* 类型定义 -------------------------------------------------------------------*/
typedef struct
{
	double utc_time;			//UTC 时间
	double latitude;			//纬度
	char n_s;					//N/S 指示
	double longitude;			//经度
	char e_w;					//E/W 指示
	u8 fix_status;				//fix_status
	u8 number_of_sv;			//使用的卫星数量
	double hdop;				//水平精度
	double altitude; 			//高地
	char altitude_unit;			//高地单位
	double geoid_separation;	//海拔高度
	char geoid_separation_unit;  //海拔高度单位
	u8 DGPS_age;				//GPS 数据年龄
	u8 DGPS_station_id;  		//GPS 数据配置
	u8 check_sum;				//校验和
} GGA_STRU;

typedef struct
{
	int x;
} GLL_STRU;
typedef struct
{
	int x;
} GSA_STRU;
typedef struct
{
	int x;
} GSV_STRU;
typedef struct
{
	double utc_time;				//UTC 时间
	//A =  数据可用，V =  数据不可用
	char data_valid;				//数据有效性
	double latitude;				//纬度
	char n_s;						//南北极
	double longitude;				//经度
	char e_w;						//西北极
	double speed;					//对地速度
	double cog;						//对地方向
	u32 date;						//时间
	char positioning_mode;			//配置模式
	char check_sum;					//校验和
} RMC_STRU;
typedef struct
{
	double cog_t;			//实际对地方向
	char t;					//参考方向
	double cog_m;			//磁极对地方向
	char m;					//磁极
	double speed_knots;  	//对地速度
	char n;					//单位
	double speed_km;		//对地速度,km
	char k;					//公里/小时
	char positioning_mode;  //模式
	u8 check_sum;			//校验和
} VTG_STR;

typedef struct
{
	GGA_STRU gga;	//GGA：时间、位置、卫星数量
	GLL_STRU gll;	//GLL：经度、纬度、 UTC 时间
	GSA_STRU gsa;	//VTG：地面速度信息
	GSV_STRU gsv;	//GSV：可见 GPS 卫星信息、仰角、方位角、信噪比
	RMC_STRU rmc;	//RMC：时间、日期、位置、速度
	VTG_STR vtg;	//VTG：地面速度信息
} NMEA_STRU;
/* --------------------------------------------------------------------------------*/
/* 函数声明 -------------------------------------------------------------------*/

/* 扩展变量 -------------------------------------------------------------------*/
void NMEA_Transform(double wgLat, double wgLon, double *mgLat, double *mgLon);
void NMEA_WGS_84toGCJ_02(double wgLat, double wgLon, double *mgLat, double *mgLon);
u8 NMEA_AnalysisGPSData(u8 * buffer, NMEA_STRU * gps);

extern NMEA_STRU gps;
#ifdef __cplusplus
}
#endif

#endif /* MC20_NMEA_H_ */

